﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        double a = 0;  //存储临时数据
        double b = 0;
        Boolean flag = false; //判断是否可以清0
        string str = "";
        
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
           
        }

        private void addition_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "+";
        }

        private void C_Click(object sender, EventArgs e)
        {
            textBox1.Text = " ";
        }

        private void delete_Click(object sender, EventArgs e)
        {
            if (textBox1.TextLength > 0)
            {
                textBox1.Text = textBox1.Text.Remove(textBox1.TextLength - 1);
            }
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void one_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "1"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "1";  
        }

        private void two_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "2"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "2";  
        }

        private void three_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "3"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "3";  
        }

        private void four_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "4"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "4";  
        }

        private void five_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "5"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "5";  
        }

        private void six_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "6"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "6";  
        }

        private void seven_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "7"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "7";  
        }

        private void eight_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "1"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "8";  
        }

        private void nine_Click(object sender, EventArgs e)
        {
            if (flag == true)                          //flag的默认值为false，所以这里不会执行if循环，  而是直接进行 “textBox1.Text += "1"  ”
            {
                textBox1.Text = "";
                flag = false;
            }
            textBox1.Text += "9";  
        }

        private void equal_Click(object sender, EventArgs e)
        {
            switch (str)                                                          //判断d的符号  也就是d是加减乘除等等的哪一种
            {
                case "+": a = b + Double.Parse(textBox1.Text);                  //a = b（第二次输入的加数，除数，减数）+ Double.Parse(textBox1.Text)  （第一次输入的加数，被除数，被减数）
                    break;
                case "-": a = b - Double.Parse(textBox1.Text);
                    break;
                case "*": a = b * Double.Parse(textBox1.Text);
                    break;
                case "/": a = b / Double.Parse(textBox1.Text);
                    break;
                case "x2": a = b * Double.Parse(textBox1.Text);
                    break;
                case "sqrt": a = Math.Sqrt(b);
                    break;
                case "1/x": a = 1 / b;
                    break;
                case "%": a = b * 0.01;
                    break;
                case "+/-": a = -1 * b;
                    break;
            }
            textBox1.Text = a + "";
            flag = true;
        }

        private void OpenSquare_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "sqrt";
        }

        private void subtraction_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "-";
        }

        private void multiplication_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "*";
        }

        private void division_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "/";
        }

        private void pow_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "x2";
        }

        private void reciprocal_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "1/x";
        }

        private void modulus_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "%";
        }

        private void SpecialSymbols_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "+/-";
        }

        private void CE_Click(object sender, EventArgs e)
        {
            if (textBox1.TextLength > 1)
            {
                textBox1.Text = textBox1.Text.Remove(textBox1.TextLength - 2);
            }
            else if(textBox1.TextLength > 0)
            {
                textBox1.Text = textBox1.Text.Remove(textBox1.TextLength - 1);
            }
            else
            {
                textBox1.Text = " ";
            }
        }

        private void point_Click(object sender, EventArgs e)
        {
            flag = true;                                               //当点击加法时，flag被赋值为true 。
            b = double.Parse(textBox1.Text);                        //b是第二个数（加法时是第二个加数，减法时是减数，除法时是除数）
            str = "point";
        }
    }
}
